#include <iostream>
#include <vector>
using namespace std;

/*给你一个正整数数组 values，其中 values[i] 表示第 i 个观光景点的评分，并且两个景点 i 和 j 之间的 距离 为 j - i。

一对景点（i < j）组成的观光组合的得分为 values[i] + values[j] + i - j ，也就是景点的评分之和 减去 它们两者之间的距离。

返回一对观光景点能取得的最高分。*/

int maxScoreSightseeingPair(vector<int> &values)
{
    int maxvi = values[0], ans = 0, n = values.size();
    // values[j] - j为固定值，所以找出最大的maxvi即可
    for (int j = 1; j < n; j++)
    {
        ans = max(ans, maxvi + values[j] - j);
        maxvi = max(maxvi, values[j] + j);
    }
    return ans;
}

int main()
{
    vector<int> values = {8, 1, 5, 2, 6};
    cout << maxScoreSightseeingPair(values) << endl;
    return 0;
}